---
title: ルートデータ
description: Starlight のルートデータオブジェクトに関する完全なリファレンスドキュメントです。
---

Starlight のルートデータオブジェクトには、現在のページに関する情報が含まれています。Starlight のデータモデルがどのように機能するかについては、[「ルートデータ」ガイド](/ja/guides/route-data/) を参照してください。

Astro コンポーネント内では、`Astro.locals.starlightRoute` からルートデータにアクセスできます。

```astro {4}
---
// src/components/Custom.astro

const { hasSidebar } = Astro.locals.starlightRoute;
---
```

[ルートミドルウェア](/ja/guides/route-data/#ルートデータのカスタマイズ) 内では、ミドルウェア関数に渡される context オブジェクトからルートデータにアクセスします。

```ts {5}
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware((context) => {
	const { hasSidebar } = context.locals.starlightRoute;
});
```

## `starlightRoute`

`starlightRoute` オブジェクトには、次のプロパティがあります。

### `dir`

**型:** `'ltr' | 'rtl'`

ページの文字方向。

### `lang`

**型:** `string`

このページのロケールを示す BCP-47 言語タグ。例: `en`, `zh-CN`, `pt-BR`。

### `locale`

**型:** `string | undefined`

言語が提供されるベースパス。ルートロケールスラッグの場合は `undefined`。

### `siteTitle`

**型:** `string`

このページのロケールに対応するサイトタイトル。

### `siteTitleHref`

**型:** `string`

サイトタイトルの `href` 属性に設定される値で、トップページへのリンクです。多言語サイトの場合は現在のロケールを含みます（例: `/en/` や `/zh-cn/`）。

### `slug`

**型:** `string`

コンテンツファイル名から生成されたこのページのスラッグ。

このプロパティは非推奨であり、今後のバージョンで削除される予定です。[Starlight の `docsLoader`](/ja/manual-setup/#コンテンツコレクションの設定) を使用して新しいコンテンツレイヤー API に移行し、代わりに [`id`](#id) プロパティを使用してください。

### `id`

**型:** `string`

[`legacy.collections`](https://docs.astro.build/ja/reference/legacy-flags/#collections) フラグを使用している場合は、コンテンツファイル名に基づくこのページの一意の ID、またはスラッグ。

### `isFallback`

**型:** `boolean | undefined`

現在の言語で未翻訳のページが既定ロケールのフォールバックコンテンツを使用している場合に `true`。多言語サイトでのみ使用されます。

### `entryMeta`

**型:** `{ dir: 'ltr' | 'rtl'; lang: string }`

ページコンテンツのロケールメタデータ。ページがフォールバックコンテンツを使用している場合、トップレベルのロケール値とは異なることがあります。

### `entry`

現在のページに対応する Astro コンテンツコレクションのエントリ。 現在のページの frontmatter 値は `entry.data` に含まれます。

```ts
entry: {
	data: {
		title: string;
		description: string | undefined;
		// その他の値
	}
}
```

このオブジェクトの構造については、[Astro の Collection Entry Type](https://docs.astro.build/ja/reference/modules/astro-content/#collectionentry) リファレンスを参照してください。

### `sidebar`

**型:** `SidebarEntry[]`

このページに対応するサイトナビゲーションサイドバーのエントリ。

### `hasSidebar`

**型:** `boolean`

このページでサイドバーを表示するかどうか。

### `pagination`

**型:** `{ prev?: Link; next?: Link }`

サイドバーが有効な場合、前後のページへのリンク。

### `toc`

**型:** `{ minHeadingLevel: number; maxHeadingLevel: number; items: TocItem[] } | undefined`

このページの目次（有効な場合）。

### `headings`

**型:** `{ depth: number; slug: string; text: string }[]`

現在のページから抽出されたすべての Markdown 見出しの配列。Starlight の設定に従う目次コンポーネントを作成したい場合は、代わりに [`toc`](#toc) を使用してください。

### `lastUpdated`

**型:** `Date | undefined`

このページが最後に更新された日時を表す JavaScript の `Date` オブジェクト（有効な場合）。

### `editUrl`

**型:** `URL | undefined`

このページを編集できるアドレスの `URL` オブジェクト（有効な場合）。

### `head`

**型:** [`HeadConfig[]`](/ja/reference/configuration/#headconfig)

現在のページの `<head>` に含めるすべてのタグの配列。`<title>` や `<meta charset="utf-8">` などの重要なタグが含まれます。

## ユーティリティ

### `defineRouteMiddleware()`

ルートミドルウェアモジュールに型を付けるには、`defineRouteMiddleware()` ユーティリティを使用します。

```ts "defineRouteMiddleware"
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware((context) => {
	// ...
});
```

### `StarlightRouteData` 型

Starlight のルートデータを扱うコードを書く場合、`StarlightRouteData` 型をインポートして`Astro.locals.starlightRoute` の構造と一致させることができます。

次の例では、`usePageTitleInTOC()` 関数がルートデータを更新し、目次内の最初の項目ラベルをデフォルトの「Overview」から現在のページタイトルに置き換えます。`StarlightRouteData` 型を使うことで、ルートデータの変更が正しいかどうかを検証できます。

```ts "StarlightRouteData"
// src/route-utils.ts
import type { StarlightRouteData } from '@astrojs/starlight/route-data';

export function usePageTitleInTOC(starlightRoute: StarlightRouteData) {
	const overviewLink = starlightRoute.toc?.items[0];
	if (overviewLink) {
		overviewLink.text = starlightRoute.entry.data.title;
	}
}
```

この関数は次のようにルートミドルウェアから呼び出すことができます。

```ts {3,6}
// src/route-middleware.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
import { usePageTitleInTOC } from './route-utils';

export const onRequest = defineRouteMiddleware((context) => {
	usePageTitleInTOC(context.locals.starlightRoute);
});
```
